﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dominio
{
    public class CommandMensaje : ICommand
    {
        public enum Metodos { MarcarComoLeido, MarcarComoNoLeido };

        private Mensaje mensaje;

        internal Mensaje Mensaje
        {
            get { return mensaje; }
            set { mensaje = value; }
        }

        private List<Object> parametros;

        internal List<Object> Parametros
        {
            get { return parametros; }
            set { parametros = value; }
        }

        private Metodos metodo;

        internal Metodos Metodo
        {
            get { return metodo; }
            set { metodo = value; }
        }

        //En parametros irian los parametros respectivos para el metodo ingresado como parametro
        //Si parametros no corresponden con el metodo tirara un Exception
        public CommandMensaje(Mensaje mensaje, List<Object> parametros, Metodos metodo)
        {
            Parametros = parametros;
            Metodo = metodo;
            Mensaje = mensaje;
        }

        public void Execute()
        {
            switch (Metodo)
            {
                case Metodos.MarcarComoLeido:
                    Mensaje.MarcarComoLeido();
                    break;

                case Metodos.MarcarComoNoLeido:
                    Mensaje.MarcarComoNoLeido();
                    break;
            }
        }

        public void UnExecute()
        {
            switch (Metodo)
            {
                case Metodos.MarcarComoLeido:
                    Mensaje.MarcarComoNoLeido();
                    break;

                case Metodos.MarcarComoNoLeido:
                    Mensaje.MarcarComoLeido();
                    break;
            }
        }

    }
}
